/**
 * websocket操作,包括全部的回执信息都在这个里面
 * @type {WebSocket}
 */
PB_WS = new WebSocket('ws://'+ PB_WS_HTTP +':8282');
//监听关闭消息
PB_WS.onclose = function(event) {
    cc.log('ws链接被关闭');
};
//链接发生错误
PB_WS.onerror = function(event){
    cc.log('ws服务错误被关闭,正在尝试重连');
}
//监听链接成功
PB_WS.onopen = function(event){
    cc.log('ws服务器链接成功');
}
/********************************************  监听服务器信息回执 begin  *************************************************/
/* 这里所有的回执信息格式固定：json , 其中固定参数为t：t代表本次回执的对应执行,t的值为10-99之间的编号 */
/* json.t 对应报文作用 */
/* json.d 数据 */
PB_WS.onmessage = function(event){
    //获取服务器传输的回的信息
    var json_data = eval('(' + event.data + ')');
    //通过json_data中的t来进行数据内容判断，从而执行对应的方法
    switch ( json_data.log_md ){
        case 10://用户上报ID信息进行client_id绑定操作
            PL_Main.ws_obtain_and_report_userinfo_end( json_data );
            break;
        case 11://用户申请获取个人信息(头像,微信名,ID,房卡数)
            PL_Main.ws_obtain_main_userinfo( json_data );
            break;
        case 12://用户申请创建房间
            PL_Main.ws_main_create_room( json_data );
            break;
        case 13://用户申请加入房间
            PL_Main.ws_main_join_room( json_data );
            break;
        case 14://有新用户进来了,这里肯定也是包括自己的;首先如果自己没画，则画自己，然后画其他三家
            PB_MD_NUM = json_data.id;//设置最新的心跳包数值
            if( PL_Room_Realy != null ){
                PL_Room_Realy.ws_user_welcome( json_data );
            }
            break;
        case 15://游戏进展询问回执
            if( PL_Room_Play == null ){
                ROOM_WS_MY =  ROOM_WS_SJ = ROOM_WS_DM = ROOM_WS_XJ = 0;
                cc.director.runScene(new RoomPlayScene());
            }else{
                ROOM_ID   = json_data.log_rid;
                PB_MD_NUM = json_data.id;//设置最新的心跳包数值
                if( PB_MD_LOGS.indexOf(PB_MD_NUM) >= 0 ){
                    cc.log("消息重复执行了！");
                    return false;
                }else{
                    PB_MD_LOGS.push( PB_MD_NUM );
                }
                /** 根据参数中的pl参数，来定位到具体是执行什么方法 **/
                switch( json_data.log_data.pl ){
                    case 1://游戏开局
                        //设置头像信息&庄家标识
                        PL_Room_Play.ws_user_welcome( json_data );
                        //获取手牌
                        if( json_data.log_data.mp == 'room_player_1' ){
                            SP = json_data.log_data.p1_sp;DP = json_data.log_data.p1_dp;
                            LP = json_data.log_data.p1_lipai;
                        }else if( json_data.log_data.mp == 'room_player_2' ){
                            SP = json_data.log_data.p2_sp;DP = json_data.log_data.p2_dp;
                            LP = json_data.log_data.p2_lipai;
                        }else if( json_data.log_data.mp == 'room_player_3' ){
                            SP = json_data.log_data.p3_sp;DP = json_data.log_data.p3_dp;
                            LP = json_data.log_data.p3_lipai;
                        }else if( json_data.log_data.mp == 'room_player_4' ){
                            SP = json_data.log_data.p4_sp;DP = json_data.log_data.p4_dp;
                            LP = json_data.log_data.p4_lipai;
                        }
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //开始游戏
                        PL_Room_Play.draw_play_start( SP , DP , LP );
                        break;
                    case 2://普通出牌
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //进行出牌人定位，进行显示模式
                        PL_Room_Play.draw_play_put( json_data.log_uid , json_data.log_data.card_number );
                        break;
					case 3://碰牌提示
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
						//进行碰牌提示按钮弹出
                        hand_peng( json_data.log_uid , json_data.log_data.card_number );
						break;
                    case 4://吃牌提示
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //设置是否能被碰&当前是否有碰牌人，碰牌人ID，吃牌人ID
                        GAME_IS_PENG  = json_data.log_data.is_peng;
                        GAME_IS_CHI   = json_data.log_data.is_chi;
                        GAME_PENG_UID = json_data.log_data.peng_uid;
                        GAME_CHI_UID  = json_data.log_data.chi_uid;
                        //进行吃牌提示按钮弹出
                        hand_chi( json_data.log_data.card_number , json_data.log_uid , json_data.log_data.chi_pai );
                        break;
                    case 5://碰牌确认,有人碰牌,这个时候的出牌权应该是在碰牌者的手里
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //进行碰牌确认操作
                        PL_Room_Play.draw_play_peng_firm( json_data.log_data.card_number , json_data.log_uid  );
                        break;
                    case 6://碰牌取消.取消碰牌，自身删除所有按钮;
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //设置是否能被碰
                        GAME_IS_PENG = json_data.log_data.is_peng;//当前的碰状态
                        GAME_IS_CHI  = json_data.log_data.is_chi;//当前的吃状态
                        //进行碰牌取消操作
                        PL_Room_Play.draw_play_peng_fail( json_data.log_uid , json_data.log_data.card_number, json_data.log_data.fail_uid );
                        break;
                    case 7://吃牌取消.取消碰牌，自身删除所有按钮;
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //设置是否能被碰
                        GAME_IS_PENG = json_data.log_data.is_peng;//当前的碰状态
                        GAME_IS_CHI  = json_data.log_data.is_chi;//当前的吃状态
                        //进行碰牌取消操作
                        PL_Room_Play.draw_play_chi_fail( json_data.log_uid , json_data.log_data.card_number, json_data.log_data.fail_uid );
                        break;
                    case 8://打出了一张没人要牌（这个没人要已经经过后台的计算了，所以肯定是没人要） - 这里如果是吃碰没有进行而且取消了的话，也是走这里；//8：代表牌没人要，且执行下一个人的摸牌动作
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //进行出牌没人要的操作
                        play_draw_input_nobodyget( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.next_card_number , json_data.log_data.chi_peng_fail );
                        break;
                    case 9://打出的牌，被下家给吃了
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        //进行吃牌确认操作
                        play_draw_eat_success( json_data.log_uid , json_data.log_data.eat_card , json_data.log_data.card_number );
                        break;
                    case 10://有人触发了起手提牌，起手提牌是系统主动触发并发送，所以不需要交换出牌权跟摸牌权
                        //进行起手提牌检查
                        draw_play_start_carry( json_data.log_uid , json_data.log_data.card_number );
                        break;
                    case 11://有人打了个牌，另一个人满足了手牌起跑
                        //设置摸牌权跟出牌权
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        draw_play_chupai_pao( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.who_pao , json_data.log_data.is_chong );
                        break;
                    case 12://摸牌后的畏牌触发
                        //设置摸牌权跟出牌权(摸牌，畏牌后，出牌权应该是在畏牌人的手中)
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        draw_play_weipai( json_data.log_uid , json_data.log_data.card_number );
                        break;
                    case 13://摸牌人摸牌后不能进行畏、提、跑的情况下；系统自动将牌出示于所有人;;注意这里的处理表多，因为还有胡，碰，吃的按钮；(跑跟下跑是自动执行)
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;//牌公示出来后，所有人都丧失出牌权跟摸牌权
                        draw_play_mopai_card_gongshi( json_data.log_data.card_number , json_data.log_uid );
                        break;
                    case 14://（手打牌） - 下跑 - 有人打了个牌，另一个人满足了“下牌”起跑
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        draw_play_chupai_xia_pao( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.who_pao , json_data.log_data.is_chong );
                        break;
                    case 15://摸牌后的“摸牌起跑 - 起跑自身”触发
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        draw_play_mopao_ziji_qipao( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.is_chong );
                        break;
                    case 16://摸牌后的“摸牌起下跑 - 下跑自身”触发
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        draw_play_mopao_ziji_xiapao( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.is_chong , json_data.log_data.pai_type );
                        break;
                    case 17://摸牌后；摸牌者丢弃牌；同时有另一个玩家手里有3张相同的；满足跑牌要求 - 这里下畏跑，下碰跑，下手跑；都是从这里，里面有个pao_type可以区分
                        GAME_PUT_UID = json_data.log_data.put_uid;
                        GAME_MOP_UID = json_data.log_data.mop_uid;
                        draw_play_mopai_other_pao( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.is_chong , json_data.log_data.pao_type );
                        break;
                    case 18://摸牌后；摸牌者丢弃牌；同时有其他玩家满足碰，吃、胡要求（胡也可以是摸牌人自己）
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;//按钮展示状态，所有人丢失
                        draw_play_mopai_18( json_data );
                        break;
                    case 19://摸牌后；包括摸牌者跟其他3方玩家，没有任何一个人能要进牌的？在自动下摸的前面；进行弃牌的操作；弃牌归摸牌者
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;//牌没人要得进；废牌状态；所有人都没有权
                        draw_play_mopai_feiqi( json_data.log_uid , json_data.log_data.card_number );
                        break;
                    case 20://摸牌后，没有任何人能跑的情况下；所有能点胡，碰，吃的人也全部选择了取消； - 所有人都没有操作了
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;
                        draw_play_mopai_20( json_data.log_uid , json_data.log_data.card_number );
                        break;
                    case 21://摸牌后，没有任何人能跑的情况下；所有能点胡，碰，吃的人也全部选择了取消； - 但还有还有人其他人有操作
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;
                        draw_play_mopai_21( json_data.log_uid , json_data.log_data.card_number );
                        break;
                    case 22://用户摸了一个牌；这个牌被自己给畏或者提了；且能胡的情况下；这里只会提醒自己，所以前端只做自己的处理
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;
                        draw_play_mopai_22( json_data.log_uid , json_data.log_data.card_number , json_data.log_data.hu_is_wp );
                        break;
                    case 23://用户准备
                        green_user_realy( json_data.log_uid );
                        break;
                    case 24://游戏继续开局
                        new_game_begin();
                        break;
                    case 25://实时显示分分专用
                        PL_Room_Play.draw_huxiANDscore( json_data.log_data );
                        break;
                    case 88://胡牌后的通知（包括所有胡牌类型）
                        GAME_PUT_UID = 0;GAME_MOP_UID = 0;
                        draw_play_hu( json_data.log_uid , json_data.log_data.hu );
                        break;
                }
            }
        default:
            break;
    }
}
/********************************************  监听服务器信息回执 begin  *************************************************/